package cn.edu.usst.cs.goldfish.booking.meetingroom.service;

import cn.edu.usst.cs.goldfish.booking.meetingroom.web.dto.booking.Slot;
import cn.edu.usst.cs.goldfish.booking.meetingroom.web.dto.booking.BookingRecordDTO;
import cn.edu.usst.cs.goldfish.booking.meetingroom.model.Meeting;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

public interface BookingService {

    List<Slot> getOccupiedSlotsOfARoom(Long roomId, LocalDate date);

    void bookARoom(Long roomId, Long userId, LocalDateTime start, LocalDateTime end, String topic);

    void cancelBooking(Long bookingId);

    List<BookingRecordDTO> getBookingsByUserEmail(String email);

    void scanAndNotifyMeetings();

    List<Meeting> getAllMeetings();

    List<Slot> getFreeSlotsOfARoomPerDay(Long roomId, LocalDate date);

    List<Map<String, Object>> getJoinableMeetings();

    List<Meeting> getJoinedMeetings(String email);
}

